{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "C:\\Users\\DELL\\.conda\\envs\\tf1\\lib\\site-packages\\tensorflow\\python\\framework\\dtypes.py:516: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
      "  _np_qint8 = np.dtype([(\"qint8\", np.int8, 1)])\n",
      "C:\\Users\\DELL\\.conda\\envs\\tf1\\lib\\site-packages\\tensorflow\\python\\framework\\dtypes.py:517: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
      "  _np_quint8 = np.dtype([(\"quint8\", np.uint8, 1)])\n",
      "C:\\Users\\DELL\\.conda\\envs\\tf1\\lib\\site-packages\\tensorflow\\python\\framework\\dtypes.py:518: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
      "  _np_qint16 = np.dtype([(\"qint16\", np.int16, 1)])\n",
      "C:\\Users\\DELL\\.conda\\envs\\tf1\\lib\\site-packages\\tensorflow\\python\\framework\\dtypes.py:519: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
      "  _np_quint16 = np.dtype([(\"quint16\", np.uint16, 1)])\n",
      "C:\\Users\\DELL\\.conda\\envs\\tf1\\lib\\site-packages\\tensorflow\\python\\framework\\dtypes.py:520: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
      "  _np_qint32 = np.dtype([(\"qint32\", np.int32, 1)])\n",
      "C:\\Users\\DELL\\.conda\\envs\\tf1\\lib\\site-packages\\tensorflow\\python\\framework\\dtypes.py:525: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
      "  np_resource = np.dtype([(\"resource\", np.ubyte, 1)])\n",
      "C:\\Users\\DELL\\.conda\\envs\\tf1\\lib\\site-packages\\tensorboard\\compat\\tensorflow_stub\\dtypes.py:541: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
      "  _np_qint8 = np.dtype([(\"qint8\", np.int8, 1)])\n",
      "C:\\Users\\DELL\\.conda\\envs\\tf1\\lib\\site-packages\\tensorboard\\compat\\tensorflow_stub\\dtypes.py:542: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
      "  _np_quint8 = np.dtype([(\"quint8\", np.uint8, 1)])\n",
      "C:\\Users\\DELL\\.conda\\envs\\tf1\\lib\\site-packages\\tensorboard\\compat\\tensorflow_stub\\dtypes.py:543: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
      "  _np_qint16 = np.dtype([(\"qint16\", np.int16, 1)])\n",
      "C:\\Users\\DELL\\.conda\\envs\\tf1\\lib\\site-packages\\tensorboard\\compat\\tensorflow_stub\\dtypes.py:544: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
      "  _np_quint16 = np.dtype([(\"quint16\", np.uint16, 1)])\n",
      "C:\\Users\\DELL\\.conda\\envs\\tf1\\lib\\site-packages\\tensorboard\\compat\\tensorflow_stub\\dtypes.py:545: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
      "  _np_qint32 = np.dtype([(\"qint32\", np.int32, 1)])\n",
      "C:\\Users\\DELL\\.conda\\envs\\tf1\\lib\\site-packages\\tensorboard\\compat\\tensorflow_stub\\dtypes.py:550: FutureWarning: Passing (type, 1) or '1type' as a synonym of type is deprecated; in a future version of numpy, it will be understood as (type, (1,)) / '(1,)type'.\n",
      "  np_resource = np.dtype([(\"resource\", np.ubyte, 1)])\n"
     ]
    }
   ],
   "source": [
    "import tensorflow as tf\n",
    "from tensorflow import keras\n",
    "from tensorflow.keras import datasets\n",
    "from tensorflow.keras import Input, Model\n",
    "from tensorflow.keras.layers import Flatten, Dense\n",
    "from tensorflow.keras.callbacks import EarlyStopping\n",
    "\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "import matplotlib.pyplot as plt\n",
    "import time\n",
    "import os"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(60000, 28, 28)\n",
      "(60000,)\n",
      "(10000, 28, 28)\n",
      "(10000,)\n"
     ]
    }
   ],
   "source": [
    "(x_train, y_train), (x_test, y_test) = datasets.fashion_mnist.load_data()\n",
    "print(x_train.shape)\n",
    "print(y_train.shape)\n",
    "print(x_test.shape)\n",
    "print(y_test.shape)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "x_train = x_train.reshape(-1, 28*28)\n",
    "x_test = x_test.reshape(-1, 28*28)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "x_train = x_train/255.0\n",
    "x_test = x_test/255.0"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "WARNING:tensorflow:From C:\\Users\\DELL\\.conda\\envs\\tf1\\lib\\site-packages\\tensorflow\\python\\ops\\init_ops.py:1288: calling VarianceScaling.__init__ (from tensorflow.python.ops.init_ops) with dtype is deprecated and will be removed in a future version.\n",
      "Instructions for updating:\n",
      "Call initializer instance with the dtype argument instead of passing it to the constructor\n"
     ]
    }
   ],
   "source": [
    "# 输入层inputx\n",
    "inputs = Input(shape=(28*28), name='input')\n",
    "\n",
    "# 隐层dense\n",
    "x = Dense(units=256, kernel_initializer='glorot_normal', activation='tanh', name='dense_0')(inputs)\n",
    "x = Dense(units=128, kernel_initializer='glorot_normal', activation='tanh', name='dense_1')(x)\n",
    "\n",
    "# 输出层\n",
    "outputs = Dense(units=10, activation='softmax', name='logit')(x)\n",
    "\n",
    "# 设置模型的inputs和outputsin\n",
    "model = Model(inputs=inputs, outputs=outputs)\n",
    "\n",
    "# 设置损失函数loss、优化器optimizer、评价标准metrics\n",
    "model.compile(loss='sparse_categorical_crossentropy',\n",
    "              optimizer=\"sgd\", metrics=['accuracy'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Model: \"model\"\n",
      "_________________________________________________________________\n",
      "Layer (type)                 Output Shape              Param #   \n",
      "=================================================================\n",
      "input (InputLayer)           [(None, 784)]             0         \n",
      "_________________________________________________________________\n",
      "dense_0 (Dense)              (None, 256)               200960    \n",
      "_________________________________________________________________\n",
      "dense_1 (Dense)              (None, 128)               32896     \n",
      "_________________________________________________________________\n",
      "logit (Dense)                (None, 10)                1290      \n",
      "=================================================================\n",
      "Total params: 235,146\n",
      "Trainable params: 235,146\n",
      "Non-trainable params: 0\n",
      "_________________________________________________________________\n"
     ]
    }
   ],
   "source": [
    "model.summary()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [],
   "source": [
    "early_stopping=EarlyStopping(monitor='val_loss', min_delta=1e-4,\n",
    "                              patience=10, restore_best_weights=True)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Train on 48000 samples, validate on 12000 samples\n",
      "Epoch 1/500\n",
      "48000/48000 [==============================] - 3s 69us/sample - loss: 0.6940 - acc: 0.7689 - val_loss: 0.5161 - val_acc: 0.8167\n",
      "Epoch 2/500\n",
      "48000/48000 [==============================] - 3s 61us/sample - loss: 0.4821 - acc: 0.8317 - val_loss: 0.4896 - val_acc: 0.8214\n",
      "Epoch 3/500\n",
      "48000/48000 [==============================] - 3s 67us/sample - loss: 0.4420 - acc: 0.8439 - val_loss: 0.4429 - val_acc: 0.8417\n",
      "Epoch 4/500\n",
      "48000/48000 [==============================] - 3s 64us/sample - loss: 0.4183 - acc: 0.8514 - val_loss: 0.4288 - val_acc: 0.8455\n",
      "Epoch 5/500\n",
      "48000/48000 [==============================] - 3s 58us/sample - loss: 0.4020 - acc: 0.8575 - val_loss: 0.4014 - val_acc: 0.8545\n",
      "Epoch 6/500\n",
      "48000/48000 [==============================] - 3s 56us/sample - loss: 0.3880 - acc: 0.8630 - val_loss: 0.3993 - val_acc: 0.8577\n",
      "Epoch 7/500\n",
      "48000/48000 [==============================] - 3s 57us/sample - loss: 0.3775 - acc: 0.8659 - val_loss: 0.3889 - val_acc: 0.8612\n",
      "Epoch 8/500\n",
      "48000/48000 [==============================] - 3s 58us/sample - loss: 0.3690 - acc: 0.8686 - val_loss: 0.3831 - val_acc: 0.8611\n",
      "Epoch 9/500\n",
      "48000/48000 [==============================] - 3s 56us/sample - loss: 0.3594 - acc: 0.8724 - val_loss: 0.3833 - val_acc: 0.8616\n",
      "Epoch 10/500\n",
      "48000/48000 [==============================] - 4s 79us/sample - loss: 0.3530 - acc: 0.8749 - val_loss: 0.3741 - val_acc: 0.8632\n",
      "Epoch 11/500\n",
      "48000/48000 [==============================] - 4s 81us/sample - loss: 0.3458 - acc: 0.8779 - val_loss: 0.3657 - val_acc: 0.8686\n",
      "Epoch 12/500\n",
      "48000/48000 [==============================] - 4s 91us/sample - loss: 0.3396 - acc: 0.8793 - val_loss: 0.3610 - val_acc: 0.8687\n",
      "Epoch 13/500\n",
      "48000/48000 [==============================] - 5s 95us/sample - loss: 0.3332 - acc: 0.8807 - val_loss: 0.3594 - val_acc: 0.8683\n",
      "Epoch 14/500\n",
      "48000/48000 [==============================] - 5s 99us/sample - loss: 0.3283 - acc: 0.8813 - val_loss: 0.3596 - val_acc: 0.8707\n",
      "Epoch 15/500\n",
      "48000/48000 [==============================] - 5s 100us/sample - loss: 0.3231 - acc: 0.8846 - val_loss: 0.3543 - val_acc: 0.8703\n",
      "Epoch 16/500\n",
      "48000/48000 [==============================] - 5s 99us/sample - loss: 0.3180 - acc: 0.8857 - val_loss: 0.3505 - val_acc: 0.8739\n",
      "Epoch 17/500\n",
      "48000/48000 [==============================] - 5s 96us/sample - loss: 0.3134 - acc: 0.8864 - val_loss: 0.3404 - val_acc: 0.8758\n",
      "Epoch 18/500\n",
      "48000/48000 [==============================] - 5s 97us/sample - loss: 0.3087 - acc: 0.8892 - val_loss: 0.3388 - val_acc: 0.8756\n",
      "Epoch 19/500\n",
      "48000/48000 [==============================] - 5s 98us/sample - loss: 0.3046 - acc: 0.8904 - val_loss: 0.3493 - val_acc: 0.8708\n",
      "Epoch 20/500\n",
      "48000/48000 [==============================] - 4s 91us/sample - loss: 0.3006 - acc: 0.8922 - val_loss: 0.3364 - val_acc: 0.8770\n",
      "Epoch 21/500\n",
      "48000/48000 [==============================] - 5s 95us/sample - loss: 0.2970 - acc: 0.8924 - val_loss: 0.3324 - val_acc: 0.8791\n",
      "Epoch 22/500\n",
      "48000/48000 [==============================] - 5s 99us/sample - loss: 0.2928 - acc: 0.8946 - val_loss: 0.3300 - val_acc: 0.8792\n",
      "Epoch 23/500\n",
      "48000/48000 [==============================] - 5s 96us/sample - loss: 0.2895 - acc: 0.8948 - val_loss: 0.3280 - val_acc: 0.8787\n",
      "Epoch 24/500\n",
      "48000/48000 [==============================] - 4s 92us/sample - loss: 0.2851 - acc: 0.8963 - val_loss: 0.3274 - val_acc: 0.8805\n",
      "Epoch 25/500\n",
      "48000/48000 [==============================] - 5s 94us/sample - loss: 0.2818 - acc: 0.8977 - val_loss: 0.3286 - val_acc: 0.8800\n",
      "Epoch 26/500\n",
      "48000/48000 [==============================] - 5s 98us/sample - loss: 0.2781 - acc: 0.9001 - val_loss: 0.3256 - val_acc: 0.8829\n",
      "Epoch 27/500\n",
      "48000/48000 [==============================] - 5s 95us/sample - loss: 0.2752 - acc: 0.9005 - val_loss: 0.3248 - val_acc: 0.8820\n",
      "Epoch 28/500\n",
      "48000/48000 [==============================] - 5s 98us/sample - loss: 0.2714 - acc: 0.9026 - val_loss: 0.3392 - val_acc: 0.8767\n",
      "Epoch 29/500\n",
      "48000/48000 [==============================] - 5s 96us/sample - loss: 0.2687 - acc: 0.9033 - val_loss: 0.3232 - val_acc: 0.8823\n",
      "Epoch 30/500\n",
      "48000/48000 [==============================] - 5s 95us/sample - loss: 0.2662 - acc: 0.9035 - val_loss: 0.3175 - val_acc: 0.8861\n",
      "Epoch 31/500\n",
      "48000/48000 [==============================] - 4s 92us/sample - loss: 0.2628 - acc: 0.9046 - val_loss: 0.3195 - val_acc: 0.8847\n",
      "Epoch 32/500\n",
      "48000/48000 [==============================] - 4s 94us/sample - loss: 0.2600 - acc: 0.9059 - val_loss: 0.3233 - val_acc: 0.8845\n",
      "Epoch 33/500\n",
      "48000/48000 [==============================] - 5s 96us/sample - loss: 0.2566 - acc: 0.9065 - val_loss: 0.3144 - val_acc: 0.8867\n",
      "Epoch 34/500\n",
      "48000/48000 [==============================] - 4s 90us/sample - loss: 0.2539 - acc: 0.9081 - val_loss: 0.3211 - val_acc: 0.8823\n",
      "Epoch 35/500\n",
      "48000/48000 [==============================] - 5s 99us/sample - loss: 0.2517 - acc: 0.9089 - val_loss: 0.3139 - val_acc: 0.8866\n",
      "Epoch 36/500\n",
      "48000/48000 [==============================] - 5s 97us/sample - loss: 0.2489 - acc: 0.9089 - val_loss: 0.3210 - val_acc: 0.8847\n",
      "Epoch 37/500\n",
      "48000/48000 [==============================] - 4s 92us/sample - loss: 0.2467 - acc: 0.9111 - val_loss: 0.3183 - val_acc: 0.8846\n",
      "Epoch 38/500\n",
      "48000/48000 [==============================] - 5s 96us/sample - loss: 0.2442 - acc: 0.9113 - val_loss: 0.3102 - val_acc: 0.8867\n",
      "Epoch 39/500\n",
      "48000/48000 [==============================] - 5s 108us/sample - loss: 0.2412 - acc: 0.9131 - val_loss: 0.3137 - val_acc: 0.8859\n",
      "Epoch 40/500\n",
      "48000/48000 [==============================] - 6s 117us/sample - loss: 0.2396 - acc: 0.9138 - val_loss: 0.3101 - val_acc: 0.8879\n",
      "Epoch 41/500\n",
      "48000/48000 [==============================] - 6s 117us/sample - loss: 0.2366 - acc: 0.9149 - val_loss: 0.3105 - val_acc: 0.8877\n",
      "Epoch 42/500\n",
      "48000/48000 [==============================] - 5s 114us/sample - loss: 0.2339 - acc: 0.9154 - val_loss: 0.3184 - val_acc: 0.8856\n",
      "Epoch 43/500\n",
      "48000/48000 [==============================] - 5s 106us/sample - loss: 0.2322 - acc: 0.9158 - val_loss: 0.3098 - val_acc: 0.8879\n",
      "Epoch 44/500\n",
      "48000/48000 [==============================] - 5s 103us/sample - loss: 0.2298 - acc: 0.9172 - val_loss: 0.3131 - val_acc: 0.8842\n",
      "Epoch 45/500\n",
      "48000/48000 [==============================] - 5s 114us/sample - loss: 0.2273 - acc: 0.9177 - val_loss: 0.3173 - val_acc: 0.8853\n",
      "Epoch 46/500\n",
      "48000/48000 [==============================] - 5s 111us/sample - loss: 0.2259 - acc: 0.9190 - val_loss: 0.3272 - val_acc: 0.8839\n",
      "Epoch 47/500\n",
      "48000/48000 [==============================] - 6s 118us/sample - loss: 0.2238 - acc: 0.9187 - val_loss: 0.3173 - val_acc: 0.8854\n",
      "Epoch 48/500\n",
      "48000/48000 [==============================] - 5s 106us/sample - loss: 0.2209 - acc: 0.9202 - val_loss: 0.3092 - val_acc: 0.8889\n",
      "Epoch 49/500\n",
      "48000/48000 [==============================] - 5s 109us/sample - loss: 0.2191 - acc: 0.9216 - val_loss: 0.3151 - val_acc: 0.8838\n",
      "Epoch 50/500\n",
      "48000/48000 [==============================] - 5s 106us/sample - loss: 0.2165 - acc: 0.9215 - val_loss: 0.3054 - val_acc: 0.8867\n",
      "Epoch 51/500\n",
      "48000/48000 [==============================] - 5s 110us/sample - loss: 0.2140 - acc: 0.9230 - val_loss: 0.3083 - val_acc: 0.8882\n",
      "Epoch 52/500\n",
      "48000/48000 [==============================] - 5s 111us/sample - loss: 0.2120 - acc: 0.9241 - val_loss: 0.3097 - val_acc: 0.8870\n",
      "Epoch 53/500\n",
      "48000/48000 [==============================] - 5s 109us/sample - loss: 0.2098 - acc: 0.9248 - val_loss: 0.3087 - val_acc: 0.8891\n",
      "Epoch 54/500\n",
      "48000/48000 [==============================] - 5s 109us/sample - loss: 0.2088 - acc: 0.9249 - val_loss: 0.3013 - val_acc: 0.8920\n",
      "Epoch 55/500\n",
      "48000/48000 [==============================] - 5s 104us/sample - loss: 0.2063 - acc: 0.9268 - val_loss: 0.3056 - val_acc: 0.8888\n",
      "Epoch 56/500\n",
      "48000/48000 [==============================] - 5s 114us/sample - loss: 0.2035 - acc: 0.9266 - val_loss: 0.3162 - val_acc: 0.8857\n",
      "Epoch 57/500\n",
      "48000/48000 [==============================] - 5s 105us/sample - loss: 0.2017 - acc: 0.9272 - val_loss: 0.3118 - val_acc: 0.8891\n",
      "Epoch 58/500\n"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "48000/48000 [==============================] - 5s 101us/sample - loss: 0.2004 - acc: 0.9277 - val_loss: 0.3157 - val_acc: 0.8878\n",
      "Epoch 59/500\n",
      "48000/48000 [==============================] - 5s 100us/sample - loss: 0.1984 - acc: 0.9287 - val_loss: 0.3046 - val_acc: 0.8894\n",
      "Epoch 60/500\n",
      "48000/48000 [==============================] - 5s 107us/sample - loss: 0.1963 - acc: 0.9299 - val_loss: 0.3087 - val_acc: 0.8907\n",
      "Epoch 61/500\n",
      "48000/48000 [==============================] - 5s 109us/sample - loss: 0.1945 - acc: 0.9309 - val_loss: 0.3251 - val_acc: 0.8829\n",
      "Epoch 62/500\n",
      "48000/48000 [==============================] - 5s 105us/sample - loss: 0.1918 - acc: 0.9321 - val_loss: 0.3026 - val_acc: 0.8914\n",
      "Epoch 63/500\n",
      "48000/48000 [==============================] - 5s 103us/sample - loss: 0.1910 - acc: 0.9315 - val_loss: 0.3107 - val_acc: 0.8898\n",
      "Epoch 64/500\n",
      "48000/48000 [==============================] - 5s 109us/sample - loss: 0.1882 - acc: 0.9327 - val_loss: 0.3313 - val_acc: 0.8823\n"
     ]
    }
   ],
   "source": [
    "history = model.fit(x=x_train, y=y_train, batch_size=32,\n",
    "                    epochs=500, validation_split=0.2,\n",
    "                    shuffle=True,callbacks=[early_stopping]) "
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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PXo0K1asCHHpTy3suqnBCOMth2pCXQwhhBAdzG6389577530tSuuuOKYU5uio6P5xz/+cT6L95WFZcs4OcZOZb1HpsQUQgjRLYRlGDujbfgDmuoGGcQlhBCi6wvLME6OcQAy8YcQQojuISzD2BltA5DTm4QQQnQLYRnGrVNiukNcEiGEEOLMwjKMncEwlpaxEEKI7iAswzjGbsFukSkxhRBCdA9hGcbGlJh2KmTiDyGE6NGio6NP+VpRUREjR448j6U5tbAMYzCOG0vLWAghRHcQljNwgTELV3F1Q6iLIYQQYenRLx5lR9WODt3m0MShLJi44LTrLFiwgL59+/Ld734XgEceeQSlFPn5+VRXV9PU1MRvfvMbZs+efVaf7Xa7+c53vsO6deuwWCz84Q9/YPr06RQUFDBv3jw8Hg+BQIA33niDXr168Y1vfIPi4mL8fj8//elPW6bg/KrCNoyTY+xsPHg01MUQQgjRgW666Sb++7//uyWMX331Vd5//32+//3vExsbS1FREZdeeinXXHPNWV2x6amnngJgy5Yt7Nixg8svv5xdu3bx9NNP873vfY9bb70Vj8eD3+9n6dKl9OrViyVLlgDGxSvOVfiGcbSNqvom/AGN2dQ9LqElhBDdxZlasJ1l7NixHDlyhJKSEsrLy0lISCA9PZ3vf//75OfnA3Do0CHKyspIS0tr93ZXrVrFfffdB8DQoUPp27cvu3btYtKkSfz617+muLiY6667jkGDBpGdnc0Pf/hDFixYwFVXXcXFF198zvUK22PGzhg7AQ1V9XJ6kxBChJM5c+bw+uuvs3jxYm666SZeeeUVysvLWb9+PatXryY1NRW3++zmmdD65NcyuOWWW3j77beJiIhg5syZLF++nMGDB7N+/Xqys7N56KGH+MUvfnHOdQrbME6ODk78ISOqhRAirNx0000sWrSI119/nTlz5lBTU0NKSgpWq5X8/Hz2799/1tucOnUqr7zyCgC7du3iwIEDDBkyhMLCQvr378/999/PNddcw+bNmykpKSEyMpLbbruNH/7wh2zYsOGc6xS23dQtE3/IiGohhAgrI0aMoK6ujoyMDNLT07n11lu5+uqrycnJYcSIEQwdOvSst/nd736X+fPnk52djcVi4YUXXsBut7N48WJefvllrFYraWlp/OxnP2Pt2rU88MADmEwmrFYrf/vb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\n",
      "text/plain": [
       "<Figure size 576x360 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "pd.DataFrame(history.history).plot(figsize=(8, 5))\n",
    "plt.grid(True)\n",
    "plt.xlabel('epoch')\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "10000/10000 [==============================] - 0s 43us/sample - loss: 0.3325 - acc: 0.8846\n",
      "loss:  0.33254718408584594\n",
      "accuracy:  0.8846\n"
     ]
    }
   ],
   "source": [
    "loss, accuracy = model.evaluate(x_test, y_test)\n",
    "print('loss: ', loss)\n",
    "print('accuracy: ', accuracy)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
